1. Field of the Invention
The present invention relates generally to storage systems, and more particularly to disk drive servo controllers.
2. Background
Conventional computer systems typically include several functional components. These components may include a central processing unit (CPU), main memory, input/output (“I/O”) devices, and disk drives. In conventional systems, the main memory is coupled to the CPU via a system bus or a local memory bus. The main memory is used to provide the CPU access to data and/or program information that is stored in main memory at execution time. Typically, the main memory is composed of random access memory (RAM) circuits. A computer system with the CPU and main memory is often referred to as a host system.
The main memory is typically smaller than disk drives and may be volatile. Programming data is often stored on the disk drive and read into main memory as needed. The disk drives are coupled to the host system via a disk controller that handles complex details of interfacing the disk drives to the host system. Communications between the host system and the disk controller is usually provided using one of a variety of standard I/O bus interfaces.
Typically, a disk drive includes one or more magnetic disks. Each disk (or platter) typically has a number of concentric rings or tracks (platter) on which data is stored. The tracks themselves may be divided into sectors, which are the smallest accessible data units. A positioning head above the appropriate track accesses a sector. An index pulse typically identifies the first sector of a track. The start of each sector is identified with a sector pulse. Typically, the disk drive waits until a desired sector rotates beneath the head before proceeding with a read or writes operation. Data is accessed serially, one bit at a time and typically, each disk has its own read/write head.
FIG. 1A shows a disk drive system 100 with platters 101A and 101B, an actuator 102 and read/write head 103. Typically, multiple platters/read and write heads are used (see FIG. 1C, heads 108-111). Platters 101A-101B have assigned tracks for storing system information, servo data and user data.
The disk drive is connected to the disk controller that performs numerous functions, for example, converting digital data to analog head signals, disk formatting, error checking and fixing, logical to physical address mapping and data buffering. To perform the various functions for transferring data, the disk controller includes numerous components.
To access data from a disk drive (or to write data), the host system must know where to read (or write data to) the data from the disk drive. A driver typically performs this task. Once the disk drive address is known, the address is translated to cylinder, head and sector based on platter geometry and sent to the disk controller. Logic on the hard disk looks at the number of cylinders requested. Servo controller firmware instructs motor control hardware to move read/write heads 103 to the appropriate track. When the head is in the correct position, it reads the data from the correct track.
Typically, read and write head 103 has a write core for writing data in a data region, and a read core for magnetically detecting the data written in the data region of a track and a servo pattern recorded on a servo region.
A servo system 104 detects the position of head 103 on platter 101A according to a phase of a servo pattern detected by the read core of head 103. Servo system 104 then moves head 103 to the target position.
Servo system 104 servo-controls head 103 while receiving feedback for a detected position obtained from a servo pattern so that any positional error between the detected position and the target position is negated.
Typically, servo data is stored on the same surface that stores user data to provide the signals for operating servo system 104. FIG. 1B shows how servo data may be located on a disk platter. Region 106 that stores servo data is typically interspersed between user-data regions 105. Each user-data region 105 has user-data track segments, and each servo-data region 106 has servo-data track segments. The servo data includes track-identification data used during track-seeking operations, and burst data used during track-following operations.
Recorded servo information is shifted (or skewed) from one head to the next. This is referred to as “staggered embedded servo fields”. FIG. 1C shows an example of staggered servo fields (“SF”) for a two-platter system using four heads (108-111) on tracks 108A-111A, respectively. It is noteworthy that Heads 108-111 is similar to head 103 and throughout the specification are used interchangeably. For example, SF DATA 106,106A, 106C and 106E are staggered with respect to each other, as head change occurs from 108 over track 108A to head 111 over track 111A.
Typically, servo information is coded at the time a disk is manufactured. During disk manufacturing, all servo fields have a controlled time based relationship from one platter surface to another surface. However, due to shock, vibration, thermal expansion, contraction, or any other factors, the angular distance as specified in the servo fields varies from one surface to another. Because the angular distance varies, the amount of time that elapses between the servo fields also varies. During head change (for example, from head 108 to 109), servo field timer must be adjusted to control proper capture of servo data to control head position when the selected head for reading transitions from one platter surface to another.
Conventional techniques, only during disk calibration, require the servo processor to measure skew between each heads, record actual skew in a table and when head 103 change occurs, adjust the servo timer by the appropriate amount.
This technique has disadvantages. For example, during calibration, servo processor resources are used for measuring and recording the values. In addition, the amount of time required by the servo processor to record and recall skew during calibration is not constant. Hence, conventional techniques are not desirable to adjust the time base based on recorded/recalled skew servo information.
Therefore, what is desired is an efficient and accurate system for time adjusting based on real time and measured, skew values.